package me.twoday.library.mine.component;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.View;
import android.widget.ListView;

/**
 * 모든 리스트뷰에서 사용하는 기능들을 구현해놓은 BaseListView 클래스 
 * 
 * @author 김학성
 * @since 2012. 4. 24.
 */
@SuppressWarnings("unused")
public class BaseListView extends ListView 
{
	private static final String LIST_VIEW_BACKGROUND_COLOR = "#ededed";
	private static final String LIST_VIEW_DIVIDER_COLOR = "#aeaeae";
	private static final String LIST_VIEW_TRANSPARENT_COLOR = "#00000000";
	
	private Activity mParentActivity;
	private BaseListHandler mListHandler;
	private BaseListAdapter mListAdapter;
	private boolean mAutoSetAdapter = true;
	
	/**
	 * 기본 생성자
	 * 
	 * @param listHandler 표준 리스트 생성자
	 */
	public BaseListView(BaseListHandler listHandler)
	{
		super(listHandler.getActivity());
		
		// 멤버 변수 할당
		this.mParentActivity = listHandler.getActivity();
		this.mListHandler = listHandler;
		
		// 기본 설정
		setBackgroundColor(Color.parseColor(LIST_VIEW_BACKGROUND_COLOR));
		setDivider(new ColorDrawable(Color.parseColor(LIST_VIEW_DIVIDER_COLOR)));
		setCacheColorHint(Color.parseColor(LIST_VIEW_TRANSPARENT_COLOR));
		setDividerHeight(1);
		
		// 어댑터 생성
		this.mListAdapter = new BaseListAdapter(listHandler);
		listHandler.setListAdapter(mListAdapter);
		listHandler.setListView(this);
		setOnScrollListener(listHandler);
		
		// 헤더/푸터뷰 추가
		View headerView = listHandler.getHeaderView();
		View footerView = listHandler.getFooterView();
		
		// 푸터뷰가 존재할경우 추가한다.
		if(footerView != null)
		{
			listHandler.setFooterView(footerView);
		}
		
		// 헤더뷰가 존재할 경우 추가한다.
		if(headerView != null)
		{
			listHandler.setHeaderView(headerView);
		}
		
		// 어댑터를 붙인다.
		//setAdapter(mListAdapter);
		
		// 핸들러 초기화 수행
		listHandler.onInit();
	}
}
